Débuter avec Quarto dans R Studio
Rédiger un document présentant une analyse produite avec R

Auteur·rice
Affiliation

Elodie Baril & Bénédicte Garnier

Institut national d’études démographiques (INED), F-93300 Aubervilliers, France

Date de publication

3 avril 2025

Analyser et rédiger simultanément

Nous montrons ici comment insérer du code r dans un document Quarto. Ce support contient des parties de texte (mis en forme), des images, et aussi des extraits de code R avec des résultats. Il permet à la fois de présenter un traitement statistique produit avec R : données, code, statistiques et d’afficher les commentaires. Cet usage est préconisé dans une démarche de recherche reproductible.

Le code est inséré dans des paragraphes appelés chunks.
Ceci permet d’exécuter le script par parties (pour chaque chunk) pour tester la syntaxe ou ajouter des commentaires au fur et à mesure de la rédaction.
Le document est généré avec le bouton Render

1+1
[1] 2

Les chunks sont delimités par la syntaxe suivante :

Structure d’un chunk
  • On ajoute un chunk dans le document en cliquant sur l’icône Insert a new code chunk (ou avec le raccourci CTRL + Alt + i).
    Le bouton Modify Chunk Options en haut à droite du chunk (visible seulement à sa création) sert à paramétrer les options d’exécutions du code. Elles peuvent s’écrire derrière le nom du chunk.

Pour indiquer plusieurs options, il est préférable de les paramétrer dans le chunk avant le code R. Par exemple :

Chunk avec options

L’option eval à fALSE n’exécute pas le code et echo à fALSE n’affiche pas le code dans le document.

Ces options peuvent également être indiquées dans le yaml et elles affecteront alors l’ensemble des chunks du document.

  • Il peut être utile de donner un nom (unique) à ses chunks.
  • On peut ajouter des commentaires dans les chunks à l’aide de # .
  • On exécute le code R au fur et à mesure via le bouton Run Current Chunk en haut à droite du chunk.

Exemple de tri croisé

On utilise un extrait de l’Enquête “Histoire de vie - Construction des identités” : hdv2003 inclus dans le package questionr.

On charge le package questionr et le dataframe hdv2003. On liste les objets contenus dans ce dataframe avec la fonction str.

library(questionr)
data(hdv2003)
str(hdv2003)
'data.frame':   2000 obs. of  20 variables:
 $ id           : int  1 2 3 4 5 6 7 8 9 10 ...
 $ age          : int  28 23 59 34 71 35 60 47 20 28 ...
 $ sexe         : Factor w/ 2 levels "Homme","Femme": 2 2 1 1 2 2 2 1 2 1 ...
 $ nivetud      : Factor w/ 8 levels "N'a jamais fait d'etudes",..: 8 NA 3 8 3 6 3 6 NA 7 ...
 $ poids        : num  2634 9738 3994 5732 4329 ...
 $ occup        : Factor w/ 7 levels "Exerce une profession",..: 1 3 1 1 4 1 6 1 3 1 ...
 $ qualif       : Factor w/ 7 levels "Ouvrier specialise",..: 6 NA 3 3 6 6 2 2 NA 7 ...
 $ freres.soeurs: int  8 2 2 1 0 5 1 5 4 2 ...
 $ clso         : Factor w/ 3 levels "Oui","Non","Ne sait pas": 1 1 2 2 1 2 1 2 1 2 ...
 $ relig        : Factor w/ 6 levels "Pratiquant regulier",..: 4 4 4 3 1 4 3 4 3 2 ...
 $ trav.imp     : Factor w/ 4 levels "Le plus important",..: 4 NA 2 3 NA 1 NA 4 NA 3 ...
 $ trav.satisf  : Factor w/ 3 levels "Satisfaction",..: 2 NA 3 1 NA 3 NA 2 NA 1 ...
 $ hard.rock    : Factor w/ 2 levels "Non","Oui": 1 1 1 1 1 1 1 1 1 1 ...
 $ lecture.bd   : Factor w/ 2 levels "Non","Oui": 1 1 1 1 1 1 1 1 1 1 ...
 $ peche.chasse : Factor w/ 2 levels "Non","Oui": 1 1 1 1 1 1 2 2 1 1 ...
 $ cuisine      : Factor w/ 2 levels "Non","Oui": 2 1 1 2 1 1 2 2 1 1 ...
 $ bricol       : Factor w/ 2 levels "Non","Oui": 1 1 1 2 1 1 1 2 1 1 ...
 $ cinema       : Factor w/ 2 levels "Non","Oui": 1 2 1 2 1 2 1 1 2 2 ...
 $ sport        : Factor w/ 2 levels "Non","Oui": 1 2 2 2 1 2 1 1 1 2 ...
 $ heures.tv    : num  0 1 0 2 3 2 2.9 1 2 2 ...

hdv2003 contient 20 variables, quasiement toutes de type Factor et 2000 observations.

On crée un tableau de contingence avec les variables trav.imp (Actuellement, diriez-vous que dans votre vie en général, votre travail est :) et sexe(sexe de la personne interrogée) avec la commande table du package questionr.

table(hdv2003$trav.imp,hdv2003$sexe)
                              
                               Homme Femme
  Le plus important               13    16
  Aussi important que le reste   159   100
  Moins important que le reste   328   380
  Peu important                   20    32

Dans cet extrait de l’enquête, on dénombre 13 répondants de sexe masculin qui ont répondu que le travail est Le plus important et 32 enquêtées qui ont répondu que le travail était Peu important.

On peut calculer les pourcentages colonne avec la commande cprop (lprop pour claculer les pourcentages lignes).

t <- table(hdv2003$trav.imp,hdv2003$sexe)
cprop(t)
                              
                               Homme Femme Ensemble
  Le plus important              2.5   3.0   2.8   
  Aussi important que le reste  30.6  18.9  24.7   
  Moins important que le reste  63.1  72.0  67.6   
  Peu important                  3.8   6.1   5.0   
  Total                        100.0 100.0 100.0   

Extraire le script R du document Quarto

Le package knitr permet de générer un script R qui portera le même nom que le document Quarto avec la commande purl.

Exemple d’extraction de script

On peut extraire le script R du document quarto en conservant les intitulés des chunks avec le package knitr.

library (knitr)
purl("Presenter une analyse.qmd")

On peut crée ainsi le fichier Presenter une analyse.R mais pour cet exemple, la commande n’est pas exécutée (option eval=false).

Exemple de fichier généré